09 定时器
up的视频讲解用触发来源、时基单元、输入捕获和输出比较四个模块,拆解定时器的工作过程。
1 从计数理解定时
定时器的基本动作是对脉冲计数。如果每个脉冲间隔已知,数了多少个脉冲,就能得到经过的时间;反过来,也可以在计数达到某个值时改变输出。

课程芯片包含高级定时器 TIM1、通用定时器 TIM2~TIM4,以及内核中的 SysTick。它们的功能不能完全互换;例如高级定时器包含互补输出、死区等控制能力。
2 先看整体结构,再看信号方向

| 模块 | 主要问题 |
|---|---|
| 时钟与触发来源 | 什么信号推动计数,什么信号控制计数过程 |
| 时基单元 | 多久计数一次,数到哪里重新开始 |
| 输入捕获 | 外部边沿到来时,计数器数到了多少 |
| 输出比较 | 计数到指定值时,输出应该怎样改变 |
触发与从模式
触发可以来自内部连接或外部引脚。根据配置,触发信号可以启动计数、控制计数门限、复位计数器,或作为外部计数时钟。

3 时基单元:PSC、CNT 与 ARR
预分频器 PSC 先把输入时钟分频;计数器 CNT 对分频后的脉冲计数;自动重装载寄存器 ARR 决定计数周期的边界。

以向上计数为例,CNT 从 0 开始,每来一个计数脉冲加 1,到达周期边界后重新开始。向下计数和中心对齐模式使用不同的计数顺序。

计算周期
在向上计数的基本配置中:
计数频率 = 定时器输入时钟 ÷ (PSC + 1)
更新周期 = (PSC + 1) × (ARR + 1) ÷ 定时器输入时钟
加 1 的原因是计数包含零。例如,从 0 数到 999,一共经过 1000 个计数状态。

高级定时器的重复计数器 RCR 还可以影响更新事件的节奏。阅读具体配置时,应把计数方式与更新条件一起考虑。
4 输入捕获:给外部边沿记录时间
输入边沿到来时,硬件把当前 CNT 锁存到捕获/比较寄存器 CCR。两次捕获值的差,可以用来计算两个边沿之间的时间。

输入通路中的滤波与边沿选择,决定哪些变化会被接受。编码器模式则进一步利用两路输入的相位关系,判断方向并计数。
5 输出比较:让计数控制波形
输出比较把 CNT 与 CCR 比较,再根据模式决定输出状态。PWM 利用这一过程,让每个周期中的一部分时间有效、另一部分时间无效。

在向上计数、PWM 模式 1 且有效电平为高的常见配置中,占空比由 CCR 相对于 ARR + 1 的比例决定。改变 ARR 影响周期,改变 CCR 影响脉宽。

接下来的两节实验分别沿输入与输出展开:先测量编码器和脉冲,再用 PWM 控制电机与舵机。